#Importing the wetterDienst library and the plotly library for graphing
import wetterdienst
from wetterdienst.provider.dwd.observation import DwdObservationRequest, \
DwdObservationPeriod, DwdObservationResolution, DwdObservationDataset,DwdObservationParameter
import plotly.express as px
from plotly.graph_objs import *
1_minute
#Setting up the resolution for data filtering
print('Please use the options as they are given')
print('Enter Resolution:')
print('Options:',DwdObservationResolution._member_names_)
Resolution=input()
Please use the options as they are given Enter Resolution: Options: ['MINUTE_1', 'MINUTE_10', 'HOURLY', 'SUBDAILY', 'DAILY', 'MONTHLY', 'ANNUAL'] DAILY
#Selecting the dataset
datasets=[]
for i in range(0,len(dir(getattr(DwdObservationParameter,Resolution)))):
datasets.append(dir(getattr(DwdObservationParameter,Resolution))[i])
if dir(getattr(DwdObservationParameter,Resolution))[i+1]=='__class__':
break
print('Enter Dataset:')
print('Options:',datasets)
Dataset=input()
Enter Dataset: Options: ['CLIMATE_SUMMARY', 'CLOUD_COVER_TOTAL', 'COUNT_WEATHER_TYPE_DEW', 'COUNT_WEATHER_TYPE_FOG', 'COUNT_WEATHER_TYPE_GLAZE', 'COUNT_WEATHER_TYPE_HAIL', 'COUNT_WEATHER_TYPE_RIPE', 'COUNT_WEATHER_TYPE_SLEET', 'COUNT_WEATHER_TYPE_STORM_STORMIER_WIND', 'COUNT_WEATHER_TYPE_STORM_STRONG_WIND', 'COUNT_WEATHER_TYPE_THUNDER', 'HUMIDITY', 'KL', 'MORE_PRECIP', 'MORE_WEATHER_PHENOMENA', 'PRECIPITATION_FORM', 'PRECIPITATION_HEIGHT', 'PRECIPITATION_MORE', 'PRESSURE_AIR_SITE', 'PRESSURE_VAPOR', 'RADIATION_SKY_LONG_WAVE', 'RADIATION_SKY_SHORT_WAVE_DIFFUSE', 'RADIATION_SKY_SHORT_WAVE_DIRECT', 'SNOW_DEPTH', 'SNOW_DEPTH_EXCELLED', 'SNOW_DEPTH_NEW', 'SOIL_TEMPERATURE', 'SOLAR', 'SUNSHINE_DURATION', 'TEMPERATURE_AIR_MAX_200', 'TEMPERATURE_AIR_MEAN_200', 'TEMPERATURE_AIR_MIN_005', 'TEMPERATURE_AIR_MIN_200', 'TEMPERATURE_SOIL', 'TEMPERATURE_SOIL_MEAN_002', 'TEMPERATURE_SOIL_MEAN_005', 'TEMPERATURE_SOIL_MEAN_010', 'TEMPERATURE_SOIL_MEAN_020', 'TEMPERATURE_SOIL_MEAN_050', 'TEMPERATURE_SOIL_MEAN_100', 'WATER_EQUIV', 'WATER_EQUIVALENT', 'WATER_EQUIVALENT_SNOW_DEPTH', 'WATER_EQUIVALENT_SNOW_DEPTH_EXCELLED', 'WEATHER_PHENOMENA', 'WEATHER_PHENOMENA_MORE', 'WIND_GUST_MAX', 'WIND_SPEED'] CLIMATE_SUMMARY
# Parameter variable selection
setting=getattr(DwdObservationParameter,Resolution)
Parameters=[]
for i in range(0,len(dir(getattr(setting,Dataset)))):
if dir(getattr(setting,Dataset))[i]=='__class__':
break
Parameters.append(dir(getattr(setting,Dataset))[i])
if Parameters==[]:
Parameter=Dataset
else:
print('Enter Parameter:')
print('Options:',Parameters)
Parameter=input()
Enter Parameter: Options: ['CLOUD_COVER_TOTAL', 'HUMIDITY', 'PRECIPITATION_FORM', 'PRECIPITATION_HEIGHT', 'PRESSURE_AIR_SITE', 'PRESSURE_VAPOR', 'QUALITY_GENERAL', 'QUALITY_WIND', 'SNOW_DEPTH', 'SUNSHINE_DURATION', 'TEMPERATURE_AIR_MAX_200', 'TEMPERATURE_AIR_MEAN_200', 'TEMPERATURE_AIR_MIN_005', 'TEMPERATURE_AIR_MIN_200', 'WIND_GUST_MAX', 'WIND_SPEED'] TEMPERATURE_AIR_MAX_200
#Setting up the Period
print('Enter Period:')
print('Options:',DwdObservationPeriod._member_names_)
Period=input()
Enter Period: Options: ['HISTORICAL', 'RECENT', 'NOW'] RECENT
# Acquiring all the stations that provide data according to selected filters
stations = DwdObservationRequest(
parameter=Parameter,
resolution=Resolution,
period=Period
)
print(stations.all().df)
print('\n')
Dircache located at C:\Users\Drass\AppData\Local\wetterdienst\wetterdienst\Cache
station_id from_date to_date height \
0 00011 1980-09-01 00:00:00+00:00 2020-09-30 00:00:00+00:00 680.0
1 00044 1969-01-01 00:00:00+00:00 2022-05-21 00:00:00+00:00 44.0
2 00071 1986-11-01 00:00:00+00:00 2019-12-31 00:00:00+00:00 759.0
3 00073 1959-03-01 00:00:00+00:00 2022-05-20 00:00:00+00:00 340.0
4 00078 1961-01-01 00:00:00+00:00 2022-05-21 00:00:00+00:00 65.0
.. ... ... ... ...
580 15911 2021-06-01 00:00:00+00:00 2022-05-21 00:00:00+00:00 278.0
581 15976 2020-04-02 00:00:00+00:00 2022-05-21 00:00:00+00:00 216.0
582 15978 2020-04-02 00:00:00+00:00 2022-05-21 00:00:00+00:00 316.0
583 19171 2020-09-01 00:00:00+00:00 2022-05-21 00:00:00+00:00 13.0
584 19172 2020-09-01 00:00:00+00:00 2022-05-21 00:00:00+00:00 48.0
latitude longitude name state
0 47.9737 8.5205 Donaueschingen (Landeplatz) Baden-Württemberg
1 52.9336 8.2370 Großenkneten Niedersachsen
2 48.2156 8.9784 Albstadt-Badkap Baden-Württemberg
3 48.6159 13.0506 Aldersbach-Kriestorf Bayern
4 52.4853 7.9126 Alfhausen Niedersachsen
.. ... ... ... ...
580 51.1348 14.4343 Großpostwitz-Denkwitz Sachsen
581 49.9529 8.2107 Ober-Olm/Bellem Rheinland-Pfalz
582 49.5044 7.8618 Sembach Rheinland-Pfalz
583 54.0038 9.8553 Hasenkrug-Hardebek Schleswig-Holstein
584 54.0246 9.3880 Wacken Schleswig-Holstein
[585 rows x 8 columns]
#Filter for a spefic station and graphing data
print('Choose Station from the above table:')
station_id=input('Enter Statins ID:')
data= stations.filter_by_station_id(station_id=station_id)
station_data = data.values.all().df
#print(station_data)
tidy = station_data.groupby(['date','value']).sum().reset_index(level=[0,1])
print(tidy)
fig = px.bar(tidy,x='date',y='value',
labels={
"date": "Year ",
"value":'TEMPERATURE_AIR',
},
title="TEMPERATURE_AIR_MAX_200 over the years",barmode='group',color='quality')
fig.show()
Choose Station from the above table: Enter Statins ID:73
parameters {'true_local_time', 'end_of_interval'} are skipped in tidy format as the date parameters are currently not converted to floats
date value quality 0 2020-11-18 00:00:00+00:00 284.95 3.0 1 2020-11-19 00:00:00+00:00 280.65 3.0 2 2020-11-20 00:00:00+00:00 280.55 3.0 3 2020-11-21 00:00:00+00:00 278.25 3.0 4 2020-11-22 00:00:00+00:00 279.45 3.0 .. ... ... ... 542 2022-05-14 00:00:00+00:00 296.95 1.0 543 2022-05-15 00:00:00+00:00 299.35 1.0 544 2022-05-16 00:00:00+00:00 298.65 1.0 545 2022-05-17 00:00:00+00:00 296.85 1.0 546 2022-05-18 00:00:00+00:00 296.45 1.0 [547 rows x 3 columns]